home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-09-05 | 37.7 KB | 2,429 lines |
- ;Mandelbrot generator PRO
- ;Last modification 5 november 1990 - 0H17
- ;V1.1 modified 18 february 1991
- ;V1.2 modified 17 august 1991
- VERSION = '1.2 '
-
- HardKbd = $bfec01
- HardKbdESC = $75
- HardMouse = $bfe001
- HardMouseButton = 6
-
- OpenLibrary = -552
- CloseLibrary = -414
- FindTask = -294
- GetMsg = -372
- WaitPort = -384
- Forbid = -132
- ReplyMsg = -378
- AllocMem = -198
- FreeMem = -210
- Wait = -318
-
- pr_CLI = $ac
- pr_MsgPort = $5c
- sm_ArgList = $24
- pr_WindowPtr = $b8
-
- OpenScreen = -198
- OpenWindow = -204
- CloseScreen = -66
- CloseWindow = -72
- SetMenuStrip = -264
- ClearMenuStrip = -54
- PrintIText = -216
- SetWindowTitles = -276
- ScreenToFront = -252
-
- LoadRGB4 = -192
- SetAPen = -342
- RectFill = -306
- SetDrMd = -354
- Move = -240
- Draw = -246
-
- SPFix =-30
- SPFlt =-36
- SPCmp =-42
- SPAdd =-66
- SPSub =-72
- SPMul =-78
- SPDiv =-84
- SPNeg =-60
-
- Open = -30
- Write = -48
- Close = -36
- CurrentDir = -126
-
- FileRequest = -294
-
- Real316 = $9e000049
- Real178 = $b2000048
- Real80 = $a0000047
- Real50 = $c8000046
- Real2 = $80000042
- Realm2 = $800000C2
- Real4 = $80000043
- Real10 = $A0000044
-
- SECTION interet,CODE
-
- move.l 4,a6
- lea IntuitionName,a1
- moveq.l #0,d0
- jsr OpenLibrary(a6)
- move.l d0,IntuitionLib
- lea GfxName,a1
- moveq.l #0,d0
- jsr OpenLibrary(a6)
- move.l d0,GfxLib
- lea FFPName,a1
- moveq.l #0,d0
- jsr OpenLibrary(a6)
- move.l d0,FFPLib
- lea DosName,a1
- moveq.l #0,d0
- jsr OpenLibrary(a6)
- move.l d0,DosLib
- lea ArpName,a1
- moveq.l #33,d0
- jsr OpenLibrary(a6)
- move.l d0,ArpLib
-
- ;V0.99 change : no more bugs
- ;while saving under WB
- sub.l a1,a1
- jsr FindTask(a6)
- move.l d0,a4
- move.l d0,MyTask
- tst.l pr_CLI(a4)
- bne FromCLI
- lea pr_MsgPort(a4),a0
- jsr WaitPort(a6)
- lea pr_MsgPort(a4),a0
- jsr GetMsg(a6)
- move.l d0,WB_Message
- move.l d0,a0
- move.l sm_ArgList(a0),a0
- cmp.l #0,a0
- beq.s Ende_StartUp
- move.l (a0),d1
- move.l DosLib,a6
- jsr CurrentDir(a6)
-
- Ende_StartUp:
- FromCLI:
- move.l IntuitionLib,a6
- lea ScreenDefs,a0
- jsr OpenScreen(a6)
- move.l d0,ScreenHandler
- move.l d0,ScreenHandler2
- move.l d0,ScreenHandler3
- move.l d0,ScreenHandler4
- lea WindowDefs,a0
- jsr OpenWindow(a6)
- move.l d0,WindowHandler
- move.l d0,a0
- move.l d0,ArpRequest+12
- move.l 50(a0),RastPort
- lea Menu00,a1
- jsr SetMenuStrip(a6)
- ;V1.1 change : system messages on my window
- move.l MyTask,a0
- move.l pr_WindowPtr(a0),OldFashion
- move.l WindowHandler,pr_WindowPtr(a0)
-
- ;V0.8 change : colors included
- move.l GfxLib,a6
- move.l ScreenHandler,a0
- add.l #44,a0
- lea Palette1,a1
- move.l #32,d0
- jsr LoadRGB4(a6)
-
- bsr Info
-
- ;V0.2 change : wait a menu to start
- WaitMenu:
- move.l 4,a6
- ChoiceNotOK:
- move.l WindowHandler,a0
- move.l 86(a0),a0
- jsr GetMsg(a6)
- tst.l d0
- bne ChoiceOK
- move.l WindowHandler,a0
- move.l 86(A0),a0
- moveq.l #0,d1
- move.b 15(A0),d1
- moveq.l #1,d0
- asl.l d1,d0
- jsr Wait(A6)
- bra ChoiceNotOK
- ChoiceOK:
- move.l d0,a1
- move.w 24(a1),d0
- move.w d0,-(sp)
- jsr ReplyMsg(a6)
- move.w (sp)+,d0
- cmpi.w #-1,d0
- beq ChoiceNotOK
- move.w d0,d1
- andi.w #$1f,d0
- lsr.w #5,d1
- andi.w #$3f,d1
- cmpi.w #4,d0
- beq Picture
- cmpi.w #3,d0
- beq Colors
- cmpi.w #2,d0
- beq Zoom
- cmpi.w #1,d0
- beq Set
- Project:
- cmpi.w #4,d1
- beq End
- cmpi.w #2,d1
- beq Generate
- cmpi.w #0,d1
- beq Save
- bsr Info
- bra WaitMenu
- Set:
- cmpi.w #1,d1
- beq Julia
- bra Mandelbrot
- Zoom:
- cmpi.w #1,d1
- beq Manual
- bsr OnScreen
- bra WaitMenu
- Picture:
- cmpi.w #1,d1
- beq Small
- bra Large
- Colors:
- cmpi.w #2,d1
- beq RedBlue
- cmpi.w #1,d1
- beq GreenBlue
- bra Rainbow
-
- Save:
- bsr SaveILBM
- bra WaitMenu
- Stop:
- bsr Info
- bra WaitMenu
- Mandelbrot:
- tst.b JuliaFlag
- beq MandelbrotOK
- move.b #1,Menu11+12
- bra WaitMenu
- MandelbrotOK:
- move.l IntuitionLib,a6
- move.l WindowHandler,a0
- jsr ClearMenuStrip(a6)
- clr.b Menu12+12
- move.b #-1,JuliaFlag
- move.l WindowHandler,a0
- lea Menu00,a1
- jsr SetMenuStrip(a6)
- lea SoundOfTwo,a0
- lea MinX,a1
- lea MinY,a2
- lea MaxX,a3
- lea MaxY,a4
- moveq.w #9,d0
- CopyLoop:
- move.b (a0),(a1)+
- move.b (a0),(a2)+
- move.b (a0),(a3)+
- move.b (a0)+,(a4)+
- dbra d0,CopyLoop
- move.b #'-',MinX
- move.b #'-',MinY
- ;v1.1 change : no more self modifying source
- ; lea ComputeMandelPoint,a0
- ; move.l a0,HereJSR+2
- move.l WindowHandler,a0
- lea TitreEcran,a2
- lea TitreFenetre2,a1
- jsr SetWindowTitles(a6)
- clr.b ZoomFlag
- bra WaitMenu
-
- Julia:
- tst.b JuliaFlag
- bne JuliaOK
- move.b #1,Menu12+12
- bra WaitMenu
- JuliaOK:
- move.l IntuitionLib,a6
- move.l WindowHandler,a0
- jsr ClearMenuStrip(a6)
- clr.b Menu11+12
- clr.b JuliaFlag
- move.l WindowHandler,a0
- lea Menu00,a1
- jsr SetMenuStrip(a6)
- lea SoundOfTwo,a0
- lea MinX,a1
- lea MinY,a2
- lea MaxX,a3
- lea MaxY,a4
- moveq.w #9,d0
- JuliaCopyLoop:
- move.b (a0),(a1)+
- move.b (a0),(a2)+
- move.b (a0),(a3)+
- move.b (a0)+,(a4)+
- dbra d0,JuliaCopyLoop
- move.b #'-',MinX
- move.b #'-',MinY
- ; lea ComputeJuliaPoint,a0
- ; move.l a0,HereJSR+2
- move.l WindowHandler,a0
- lea TitreEcran,a2
- lea TitreFenetre1,a1
- jsr SetWindowTitles(a6)
- clr.b ZoomFlag
-
- JuliaGo:
- move.l IntuitionLib,a6
- lea JuliaWindowDefs,a0
- jsr OpenWindow(a6)
- move.l d0,JuliaWindowHandler
- move.l 4,a6
- JuliaNotOK:
- move.l JuliaWindowHandler,a0
- move.l 86(a0),a0
- jsr GetMsg(a6)
- tst.l d0
- bne Julia_OK
- move.l JuliaWindowHandler,a0
- move.l 86(a0),a0
- moveq.l #0,d1
- move.b 15(a0),d1
- moveq.l #1,d0
- asl.l d1,d0
- jsr Wait(A6)
- bra JuliaNotOK
- Julia_OK:
- move.l d0,a1
- move.l 28(a1),a0
- move.w $26(a0),d6
- jsr ReplyMsg(a6)
- cmpi.w #1,d6
- beq JuliaEnd
- cmpi.w #2,d6
- bne JuliaNotOK
- ;JuliaOnScreen:
- move.l JuliaWindowHandler,a0
- move.l IntuitionLib,a6
- jsr CloseWindow(a6)
- move.l WindowHandler,a0
- JuliaOSWait:
- btst #HardMouseButton,HardMouse
- bne JuliaOSWait
- JuliaOSWait2:
- btst #HardMouseButton,HardMouse
- bne JuliaOSWait2
- bsr GetCoords
- sub.w ScrMinX+2,d0
- sub.w ScrMinY+2,d1
- move.w d0,d6
- move.w d1,d7
- and.l #$ffff,d6
- and.l #$ffff,d7
- move.l FFPLib,a6
- move.l RealMaxX,d0
- move.l RealMinX,d1
- jsr SPSub(a6)
- move.l RealXSize,d1
- jsr SPDiv(a6)
- move.l d0,d5
- move.l d6,d0
- jsr SPFlt(a6)
- move.l d5,d1
- jsr SPMul(a6)
- move.l RealMinX,d1
- jsr SPAdd(a6)
- move.l d0,RealAA
- lea AA,a0
- bsr FFPTOS
- move.l RealMaxY,d0
- move.l RealMinY,d1
- jsr SPSub(a6)
- move.l RealYSize,d1
- jsr SPDiv(a6)
- move.l d0,d5
- move.l d7,d0
- jsr SPFlt(a6)
- move.l d5,d1
- jsr SPMul(a6)
- move.l RealMinY,d1
- jsr SPAdd(a6)
- move.l d0,RealOO
- lea OO,a0
- bsr FFPTOS
- bra JuliaGo
-
- JuliaEnd:
- move.l FFPLib,a6
- lea OO,a0
- bsr STOFFP
- move.l d0,RealOO
- lea AA,a0
- bsr STOFFP
- move.l d0,RealAA
- move.l IntuitionLib,a6
- move.l JuliaWindowHandler,a0
- jsr CloseWindow(a6)
- bra WaitMenu
-
- Small:
- move.b #1,Menu42+12
- clr.b Menu41+12
- clr.b SmallFlag
- bra WaitMenu
-
- Large:
- move.b #1,Menu41+12
- clr.b Menu42+12
- move.b #-1,SmallFlag
- bra WaitMenu
-
- Rainbow:
- move.b #1,Menu31+12
- tst.b ColorFlag
- beq WaitMenu
- clr.b Menu32+12
- clr.b Menu33+12
- move.l GfxLib,a6
- move.l ScreenHandler,a0
- add.l #44,a0
- lea Palette1,a1
- move.l #32,d0
- jsr LoadRGB4(a6)
- clr.b ColorFlag
- bra WaitMenu
-
- GreenBlue:
- move.b #1,Menu32+12
- cmpi.b #1,ColorFlag
- beq WaitMenu
- clr.b Menu31+12
- clr.b Menu33+12
- move.l GfxLib,a6
- move.l ScreenHandler,a0
- add.l #44,a0
- lea Palette2,a1
- move.l #32,d0
- jsr LoadRGB4(a6)
- move.b #1,ColorFlag
- bra WaitMenu
-
- RedBlue:
- move.b #1,Menu33+12
- cmpi.b #2,ColorFlag
- beq WaitMenu
- clr.b Menu31+12
- clr.b Menu32+12
- move.l GfxLib,a6
- move.l ScreenHandler,a0
- add.l #44,a0
- lea Palette3,a1
- move.l #32,d0
- jsr LoadRGB4(a6)
- move.b #2,ColorFlag
- bra WaitMenu
-
- ;*******************************************
- ;*** Compute a whole picture ***************
- ;*******************************************
- Generate:
- move.l IntuitionLib,a6
- move.l WindowHandler,a0
- jsr ClearMenuStrip(a6)
-
- move.l GfxLib,a6
- move.l RastPort,a1
- moveq.l #0,d0
- jsr SetAPen(a6)
- move.l RastPort,a1
- move.l #2,d0
- move.l #10,d1
- move.l #318,d2
- move.l #188,d3
- jsr RectFill(a6)
-
- tst.b SmallFlag
- bne LargePicture
- move.l #120,ScrMinX
- move.l #65,ScrMinY
- move.l #200,ScrMaxX
- move.l #115,ScrMaxY
- move.l #Real80,RealXSize
- move.l #Real50,RealYSize
- bra SmallPicture
- LargePicture:
- move.l #2,ScrMinX
- move.l #10,ScrMinY
- move.l #319,ScrMaxX
- move.l #189,ScrMaxY
- move.l #Real316,RealXSize
- move.l #Real178,RealYSize
- SmallPicture:
-
- move.l FFPLib,a6
- tst.b ZoomFlag
- bne RealBorns
- lea MaxX,a0
- bsr STOFFP
- move.l d0,RealMaxX
- lea MaxY,a0
- bsr STOFFP
- move.l d0,RealMaxY
- lea MinX,a0
- bsr STOFFP
- move.l d0,RealMinX
- lea MinY,a0
- bsr STOFFP
- move.l d0,RealMinY
- bra AfterRealBorns
- RealBorns:
- move.l ZoomMinX,RealMinX
- move.l ZoomMinY,RealMinY
- move.l ZoomMaxX,RealMaxX
- move.l ZoomMaxY,RealMaxY
- AfterRealBorns:
- move.l RealMaxX,d0
- move.l RealMinX,d1
- jsr SPSub(a6)
- move.l RealXSize,d1
- jsr SPDiv(a6)
- move.l d0,CoefTransX
-
- move.l RealMaxY,d0
- move.l RealMinY,d1
- jsr SPSub(a6)
- move.l RealYSize,d1
- jsr SPDiv(a6)
- move.l d0,CoefTransY
-
- move.l ScrMinY,d1
- LoopY:
- move.l ScrMinX,d0
- LoopX:
- move.l FFPLib,a6
- tst.b JuliaFlag
- bne.s NotAJuliaSet
- jsr ComputeJuliaPoint
- bra.s WasAJuliaSet
- NotAJuliaSet:
- jsr ComputeMandelPoint
- WasAJuliaSet:
- movem.l d0/d1,-(sp)
- move.l RastPort,a0
- move.w d4,d2
- addq.w #1,d2
- lsr.w #1,d2
- jsr FastPlot(pc)
- movem.l (sp)+,d0/d1
- cmpi.b #HardKbdESC,HardKbd
- beq EndGenerate
- addq.l #1,d0
- cmp.l ScrMaxX,d0
- blt LoopX
- addq.l #1,d1
- cmp.l ScrMaxY,d1
- blt LoopY
- EndGenerate:
- move.l IntuitionLib,a6
- move.l WindowHandler,a0
- lea Menu00,a1
- jsr SetMenuStrip(a6)
-
- move.l FFPLib,a6
- move.l RealMaxX,d0
- lea MaxX,a0
- bsr FFPTOS
- move.l RealMaxY,d0
- lea MaxY,a0
- bsr FFPTOS
- move.l RealMinX,d0
- lea MinX,a0
- bsr FFPTOS
- move.l RealMinY,d0
- lea MinY,a0
- bsr FFPTOS
- move.l RealAA,d0
- lea AA,a0
- bsr FFPTOS
- move.l RealOO,d0
- lea OO,a0
- bsr FFPTOS
-
- bra WaitMenu
-
- ;*********************************************
- ;*** Finished : leave the prg. ***************
- ;*********************************************
- End:
- move.l MyTask,a0
- move.l OldFashion,pr_WindowPtr(a0)
- move.l IntuitionLib,a6
- move.l WindowHandler,a0
- jsr ClearMenuStrip(a6)
- move.l WindowHandler,a0
- jsr CloseWindow(a6)
- move.l ScreenHandler,a0
- jsr CloseScreen(a6)
- move.l a6,a1
- move.l 4,a6
- jsr CloseLibrary(a6)
- move.l ArpLib,a1
- cmp.l #0,a1
- beq ThereWhereNoArp
- jsr CloseLibrary(a6)
- ThereWhereNoArp:
- move.l FFPLib,a1
- jsr CloseLibrary(a6)
- move.l GfxLib,a1
- jsr CloseLibrary(a6)
- move.l DosLib,a1
- jsr CloseLibrary(a6)
- tst.l WB_Message
- beq.s NoStartWB
- jsr Forbid(a6)
- move.l WB_Message,a1
- jsr ReplyMsg(a6)
- NoStartWB:
- moveq.l #0,d0
- rts
-
- ;************************************************
- ;*** Compute one point of the Julia set *********
- ;************************************************
- ComputeJuliaPoint:
- movem.l d0/d1,-(sp)
- sub.l ScrMinX,d0
- sub.l ScrMinY,d1
- move.l d1,d7
- jsr SPFlt(a6)
- move.l CoefTransX,d1
- jsr SPMul(a6)
- move.l RealMinX,d1
- jsr SPAdd(a6)
- move.l d0,d6
- move.l d7,d0
- jsr SPFlt(a6)
- move.l CoefTransY,d1
- jsr SPMul(a6)
- move.l RealMinY,d1
- jsr SPAdd(a6)
- move.l d0,d7
-
- moveq.l #63,d4
- loop:
- move.l d7,d0
- move.l d7,d1
- jsr SPMul(a6) ;x*x
- move.l d0,d5
- move.l d6,d0
- move.l d6,d1
- jsr SPMul(a6) ;y*y
- move.l d5,d1
- jsr SPSub(a6) ;x^2-y^2
- move.l RealAA,d1
- jsr SPAdd(a6) ;x^2-y^2+AA
- move.l d0,d5
-
- ; move.l #Real2,d0
- ; move.l d6,d1
- ; jsr SPMul(a6) ;2*x
- move.l d6,d0
- addq #1,d0
- move.l d7,d1
- jsr SPMul(a6) ;2*x*y
- move.l RealOO,d1
- jsr SPAdd(a6) ;2*x*y+OO
-
- move.l d0,d7
- move.l d5,d6
-
- move.l d0,d1
- jsr SPMul(a6) ;x^2
- move.l d0,d5
- move.l d7,d0
- move.l d7,d1
- jsr SPMul(a6) ;y^2
- move.l d5,d1
- jsr SPAdd(a6) ;x^2+y^2
- move.l #Real4,d1
- jsr SPCmp(a6) ; <4 ?
- cmpi.b #1,d0
- bne EndOfLoop
- dbra d4,loop
- EndOfLoop:
- movem.l (sp)+,d0/d1
- rts
-
- ;************************************************
- ;*** Compute one point of the Mandelbrot set ****
- ;************************************************
- ComputeMandelPoint:
- movem.l d0/d1,-(sp)
- sub.l ScrMinX,d0
- sub.l ScrMinY,d1
- move.l d1,d7
- jsr SPFlt(a6)
- move.l CoefTransX,d1
- jsr SPMul(a6)
- move.l RealMinX,d1
- jsr SPAdd(a6)
- move.l d0,RealR
- move.l d7,d0
- jsr SPFlt(a6)
- move.l CoefTransY,d1
- jsr SPMul(a6)
- move.l RealMinY,d1
- jsr SPAdd(a6)
- move.l d0,RealI
-
- moveq.l #0,d6
- moveq.l #0,d7
- moveq.l #63,d4
- MandelLoop:
- move.l d7,d0
- move.l d7,d1
- jsr SPMul(a6) ;x*x
- move.l d0,d5
- move.l d6,d0
- move.l d6,d1
- jsr SPMul(a6) ;y*y
- move.l d5,d1
- jsr SPSub(a6) ;x^2-y^2
- move.l RealR,d1
- jsr SPAdd(a6) ;x^2-y^2+R
- move.l d0,d5
-
- ; move.l #Real2,d0
- ; move.l d6,d1
- ; jsr SPMul(a6)
- move.l d6,d0 ; speedy code for
- addq #1,d0 ; FFP * 2
- move.l d7,d1
- jsr SPMul(a6)
- move.l RealI,d1
- jsr SPAdd(a6)
-
- move.l d0,d7
- move.l d5,d6
-
- move.l d0,d1
- jsr SPMul(a6)
- move.l d0,d5
- move.l d7,d0
- move.l d7,d1
- jsr SPMul(a6)
- move.l d5,d1
- jsr SPAdd(a6)
- move.l #Real4,d1
- jsr SPCmp(a6)
- cmpi.b #1,d0
- bne EndOfMandelLoop
- dbra d4,MandelLoop
- EndOfMandelLoop:
- movem.l (sp)+,d0/d1
- rts
-
- ;*************************************************************************
- ;***** STOFFP(string) transform a string into a fast floating point **
- ;*************************************************************************
- STOFFP:
- movem.l d1/d2/d3,-(sp)
- moveq.l #0,d0
- moveq.l #1,d3
- STOFFP_Label:
- cmpi.b #' ',(a0)
- beq STOFFP_GoOn
- cmpi.b #'+',(a0)
- bne STOFFP_DontGoOn
- STOFFP_GoOn:
- add.l #1,a0
- bra STOFFP_Label
- STOFFP_DontGoOn:
- cmpi.b #'-',(a0)
- bne STOFFP_NoMinus
- neg.l d3
- add.l #1,a0
- STOFFP_NoMinus:
- moveq.l #0,d2
- STOFFP_NoLuck:
- move.b (a0)+,d2
- tst.b d2
- beq STOFFP_Finish
- cmpi.b #' ',d2
- beq STOFFP_NoLuck
- cmpi.b #'.',d2
- beq STOFFP_AfterPoint
- move.l #Real10,d1
- jsr SPMul(a6)
- sub.b #'0',d2
- exg.l d2,d0
- jsr SPFlt(a6)
- move.l d2,d1
- jsr SPAdd(a6)
- bra STOFFP_NoMinus
- STOFFP_AfterPoint:
- move.l d0,-(sp)
- moveq.l #0,d0
- STOFFP_loop1:
- tst.b (a0)+
- bne STOFFP_loop1
- sub.l #1,a0
- STOFFP_loop2:
- moveq.l #0,d2
- move.b -(a0),d2
- cmpi.b #'.',d2
- beq STOFFP_EndAfterPoint
- sub.b #'0',d2
- exg.l d0,d2
- jsr SPFlt(a6)
- move.l d2,d1
- jsr SPAdd(a6)
- move.l #Real10,d1
- jsr SPDiv(a6)
- bra STOFFP_loop2
- STOFFP_EndAfterPoint:
- move.l (sp)+,d1
- jsr SPAdd(a6)
- STOFFP_Finish:
- cmpi.b #-1,d3
- bne.s STOFFP_Finished
- jsr SPNeg(a6)
- STOFFP_Finished:
- movem.l (sp)+,d1/d2/d3
- rts
-
- ;**********************************************************************
- ;*** FFPTOS : transforms a fast floating point in a 10 chars string ***
- ;**********************************************************************
- FFPTOS:
- move.l d0,d5
- moveq.b #0,d6
- moveq.b #0,d1
- jsr SPCmp(a6)
- cmpi.b #1,d0
- bne FFPTOS_NotNeg
- move.b #'-',(a0)+
- addq.b #1,d6
- move.l d5,d0
- jsr SPNeg(a6)
- move.l d0,d5
- FFPTOS_NotNeg:
- move.l d5,d0
- jsr SPFix(a6)
- tst.l d0
- beq FFPTOS_AfterPoint
- move.l d0,d4
- jsr SPFlt(a6)
- move.l d0,d1
- move.l d5,d0
- jsr SPSub(a6)
- move.l d0,d5
- addi.b #'0',d4
- move.b d4,(a0)+
- addq.b #1,d6
- FFPTOS_AfterPoint:
- move.b #'.',(a0)+
- addq.b #1,d6
- FFPTOS_AfterPointLoop:
- move.l d5,d0
- move.l #Real10,d1
- jsr SPMul(a6)
- move.l d0,d5
- jsr SPFix(a6)
- move.l d0,d4
- jsr SPFlt(a6)
- move.l d5,d1
- exg.l d0,d1
- jsr SPSub(a6)
- move.l d0,d5
- addi.b #'0',d4
- move.b d4,(a0)+
- addq.b #1,d6
- cmpi.b #9,d6
- bne FFPTOS_AfterPointLoop
- rts
-
-
- ;*********************************************************
- ;*** INFO : Put my name on *******************************
- ;*********************************************************
- Info:
- movem.l d0-a6,-(sp)
- clr.l OKGadget
- move.l IntuitionLib,a6
- lea InfoWindowDefs,a0
- jsr OpenWindow(a6)
- move.l d0,InfoWindowHandler
- move.l d0,a0
- move.l 50(a0),a0
- lea InfoText,a1
- moveq.l #10,d0
- move.l d0,d1
- jsr PrintIText(a6)
- move.l 4,a6
- InfoNotOK:
- move.l InfoWindowHandler,a0
- move.l 86(a0),a0
- jsr GetMsg(a6)
- tst.l d0
- bne InfoOK
- move.l InfoWindowHandler,a0
- move.l 86(A0),a0
- moveq.l #0,d1
- move.b 15(A0),d1
- moveq.l #1,d0
- asl.l d1,d0
- jsr Wait(A6)
- bra InfoNotOK
- InfoOK:
- move.l d0,a1
- jsr ReplyMsg(a6)
- move.l InfoWindowHandler,a0
- move.l IntuitionLib,a6
- jsr CloseWindow(a6)
- movem.l (sp)+,d0-a6
- rts
-
- ;****************************************************
- ;*** ZOOM : get On screen new coords ****************
- ;****************************************************
- OnScreen:
- move.l WindowHandler,a0
- btst #HardMouseButton,HardMouse
- bne OnScreen
- bsr GetCoords
- move.w d1,PolyTable+2
- move.w d0,PolyTable
- move.w d1,PolyTable+6
- move.w d0,PolyTable+4
- move.l GfxLib,a6
- move.l RastPort,a1
- moveq.l #2,d0
- jsr SetDrMd(a6)
- move.l RastPort,a1
- moveq.l #1,d0
- jsr SetAPen(a6)
- DrawPoly:
- bsr RectDraw
- GetMouseCoords:
- move.l WindowHandler,a0
- bsr GetCoords
- btst #HardMouseButton,HardMouse
- bne UnDrawPoly
- cmp.w PolyTable,d0
- bne UnDrawPoly
- cmp.w PolyTable+2,d1
- beq GetMouseCoords
- UnDrawPoly:
- movem.w d0/d1,-(sp)
- bsr RectDraw
- movem.w (sp)+,d0/d1
- btst #HardMouseButton,HardMouse
- bne EndPolyWork
- move.w d0,PolyTable+4
- move.w d1,PolyTable+6
- bra DrawPoly
- EndPolyWork:
- move.l RastPort,a1
- moveq.l #0,d0
- jsr SetDrMd(a6)
- move.w PolyTable,d0
- move.w PolyTable+4,d1
- cmp.w d0,d1
- bgt XNoProb
- exg d0,d1
- XNoProb:
- bne XNoProb2
- addq.w #1,d1
- XNoProb2:
- move.w d0,PolyTable
- move.w d1,PolyTable+4
- move.w PolyTable+2,d0
- move.w PolyTable+6,d1
- cmp.w d0,d1
- bgt YNoProb
- exg d0,d1
- YNoProb:
- bne YNoProb2
- addq.w #1,d1
- YNoProb2:
- move.w d1,PolyTable+6
- move.w d0,PolyTable+2
- move.l FFPLib,a6
- move.l RealMaxX,d0
- move.l RealMinX,d1
- jsr SPSub(a6)
- move.l RealXSize,d1
- jsr SPDiv(a6)
- move.l d0,d5
- ;MinX
- move.w PolyTable,d0
- sub.w ScrMinX+2,d0
- and.l #$ffff,d0
- jsr SPFlt(a6)
- move.l d5,d1
- jsr SPMul(a6)
- move.l RealMinX,d1
- jsr SPAdd(a6)
- move.l d0,ZoomMinX
- ;MaxX
- move.w PolyTable+4,d0
- sub.w ScrMinX+2,d0
- and.l #$ffff,d0
- jsr SPFlt(a6)
- move.l d5,d1
- jsr SPMul(a6)
- move.l RealMinX,d1
- jsr SPAdd(a6)
- move.l d0,ZoomMaxX
- ;*
- move.l RealMaxY,d0
- move.l RealMinY,d1
- jsr SPSub(a6)
- move.l RealYSize,d1
- jsr SPDiv(a6)
- move.l d0,d5
- ;MinY
- move.w PolyTable+2,d0
- sub.w ScrMinY+2,d0
- and.l #$ffff,d0
- jsr SPFlt(a6)
- move.l d5,d1
- jsr SPMul(a6)
- move.l RealMinY,d1
- jsr SPAdd(a6)
- move.l d0,ZoomMinY
- ;MaxY
- move.w PolyTable+6,d0
- sub.w ScrMinY+2,d0
- and.l #$ffff,d0
- jsr SPFlt(a6)
- move.l d5,d1
- jsr SPMul(a6)
- move.l RealMinY,d1
- jsr SPAdd(a6)
- move.l d0,ZoomMaxY
- ;***
- move.b #-1,ZoomFlag
- rts
-
- RectDraw:
- move.l RastPort,a1
- move.w PolyTable,d0
- move.w PolyTable+2,d1
- jsr Move(a6)
- move.l RastPort,a1
- move.w PolyTable+4,d0
- move.w PolyTable+2,d1
- jsr Draw(a6)
- move.l RastPort,a1
- move.w PolyTable+4,d0
- move.w PolyTable+6,d1
- jsr Draw(a6)
- move.l RastPort,a1
- move.w PolyTable,d0
- move.w PolyTable+6,d1
- jsr Draw(a6)
- move.l RastPort,a1
- move.w PolyTable,d0
- move.w PolyTable+2,d1
- jsr Draw(a6)
- rts
-
- GetCoords:
- move.w 14(a0),d0
- move.w 12(a0),d1
- cmp.w ScrMinX+2,d0
- blt XnoOK1
- cmp.w ScrMaxX+2,d0
- bgt XnoOK2
- XOK:
- cmp.w ScrMinY+2,d1
- blt YnoOK1
- cmp.w ScrMaxY+2,d1
- bgt YnoOK2
- YOK:
- rts
- XnoOK1:
- move.w ScrMinX+2,d0
- bra XOK
- XnoOK2:
- move.w ScrMaxX+2,d0
- bra XOK
- YnoOK1:
- move.w ScrMinY+2,d1
- bra YOK
- YnoOK2:
- move.w ScrMaxY+2,d1
- bra YOK
-
- ;************************************************
- ;*** Window for a complete choice ***************
- ;************************************************
- Manual:
- move.l #StringGadget1,OKGadget
- move.l IntuitionLib,a6
- lea InfoWindowDefs,a0
- jsr OpenWindow(a6)
- move.l d0,InfoWindowHandler
- move.l 4,a6
- ManualNotOK:
- move.l InfoWindowHandler,a0
- move.l 86(a0),a0
- jsr GetMsg(a6)
- tst.l d0
- bne ManualOK
- move.l InfoWindowHandler,a0
- move.l 86(A0),a0
- moveq.l #0,d1
- move.b 15(A0),d1
- moveq.l #1,d0
- asl.l d1,d0
- jsr Wait(A6)
- bra ManualNotOK
- ManualOK:
- move.l d0,a1
- move.l 28(a1),a0
- move.w $26(a0),d6
- jsr ReplyMsg(a6)
- cmpi.w #1,d6
- bne ManualNotOK
- move.l InfoWindowHandler,a0
- move.l IntuitionLib,a6
- jsr CloseWindow(a6)
- clr.b ZoomFlag
- lea MinX,a0
- bsr Verify
- lea MaxX,a0
- bsr Verify
- lea MinY,a0
- bsr Verify
- lea MaxY,a0
- bsr Verify
- bra WaitMenu
-
- Verify:
- moveq.l #0,d1
- VerifyNext:
- move.b (a0)+,d0
- tst.b d0
- beq EndVerify
- cmpi.b #' ',d0
- beq VerifyNext
- cmpi.b #'-',d0
- bne NotMinus
- btst #1,d1
- beq NotEvenOne
- move.b #' ',-1(a0)
- bra VerifyNext
- NotEvenOne:
- bset #1,d1
- bra VerifyNext
- NotMinus:
- cmpi.b #'.',d0
- bne NoPoint
- btst #2,d1
- beq NotEvenOneP
- move.b #' ',-1(a0)
- bra VerifyNext
- NotEvenOneP:
- bset #2,d1
- bra VerifyNext
- NoPoint:
- cmpi.b #'0',d0
- blt NoNumber
- cmpi.b #'9',d0
- bgt NoNumber
- btst #3,d1
- beq FirstNumber
- btst #2,d1
- bne VerifyNext
- NoNumber:
- move.b #' ',-1(a0)
- bra VerifyNext
- FirstNumber:
- bset #3,d1
- bra VerifyNext
- EndVerify:
- rts
-
- ;************************************************
- ;*** SaveILBM : A0 = screen *********************
- ;************************************************
- SaveILBM:
- move.l ArpLib,a6
- cmp.l #0,a6
- beq SaveWithoutArp
- lea ArpRequest,a0
- jsr FileRequest(A6)
- tst.l d0
- bne FileRequestOK
- rts
- FileRequestOK:
- lea ArpRequest,a0
- move.l 8(a0),a1
- lea sILBM_Name,a2
- LoopCheckDir:
- tst.b (a1)
- beq EndLoopCheckDir
- move.b (a1)+,(a2)+
- bra LoopCheckDir
- EndLoopCheckDir:
- move.l 8(a0),a1
- tst.b (a1)
- beq AlreadySlash
- cmp.b #'/',-1(a2)
- beq AlreadySlash
- cmp.b #':',-1(a2)
- beq AlreadySlash
- move.b #'/',(a2)+
- AlreadySlash:
- move.l 4(a0),a1
- LoopCheckName:
- tst.b (a1)
- beq EndLoopCheckName
- move.b (a1)+,(a2)+
- bra LoopCheckName
- EndLoopCheckName:
- clr.b (a2)
- bra SaveIt
-
- SaveWithoutArp:
- move.l IntuitionLib,a6
- move.l #SaveGadget2,SaveGadget1
- lea SaveWindowDefs,a0
- jsr OpenWindow(a6)
- move.l d0,SaveWindowHandler
- move.l 4,a6
- SaveNotOK:
- move.l SaveWindowHandler,a0
- move.l 86(a0),a0
- jsr GetMsg(a6)
- tst.l d0
- bne SaveOK
- move.l SaveWindowHandler,a0
- move.l 86(a0),a0
- moveq.l #0,d1
- move.b 15(A0),d1
- moveq.l #1,d0
- asl.l d1,d0
- jsr Wait(A6)
- bra SaveNotOK
- SaveOK:
- move.l d0,a1
- move.l 28(a1),a0
- move.w $26(a0),d6
- cmpi.w #3,d6
- jsr ReplyMsg(a6)
- beq SaveNotOK
- move.l SaveWindowHandler,a0
- move.l IntuitionLib,a6
- jsr CloseWindow(a6)
- cmpi.w #2,d6
- bne SaveIt
- rts
- SaveIt:
- move.l ScreenHandler,a0
- move.l a0,-(sp)
- move.l 4,a6
- move.l #$10000,d1
- move.l #41000,d0
- jsr AllocMem(a6)
- move.l (sp)+,a0
- tst.l d0
- beq SaveError
- move.l d0,sILBM_Buffer
- move.l d0,a2
- move.l #'FORM',(a2)
- move.l #'ILBM',8(a2)
- move.l #'BMHD',12(a2)
- move.l #20,16(a2)
- move.l #$0a0b,32(a2)
- move.l #'CAMG',40(a2)
- move.l #4,44(a2)
- move.l #$4002,48(a2)
- lea 84(a0),a1 ;a1<-Rastport
- move.l 4(a1),a1 ;a1<-Bitmap
- move.b 5(a1),d0
- move.b d0,28(a2)
- moveq.l #1,d1
- lsl.l d0,d1
- move.l d1,d0
- mulu #3,d0
- move.l d0,56(a2)
- move.l #'CMAP',52(a2)
- move.l #'BODY',60(a2,d0.w)
- move.l a2,a3
- add.l d0,a3
- add.l #68,a3
- move.w (a1),d1 ;d1<-BytesPerRow
- lsl.w #3,d1
- move.w d1,20(a2)
- move.w d1,36(a2)
- move.w 2(a1),22(a2)
- move.w 2(a1),38(a2)
- move.b #1,30(a2) ;ByteRun1
- lea 44(a0),a0 ;a0<-Viewport
- move.l 4(a0),a0 ;a0<-ColorMap
- move.l 4(a0),a0 ;a0<-ColorTable
- lea 60(a2),a4
- divu #3,d0
- subq.w #1,d0
- sILBM_LoopColors:
- move.w (a0)+,d1
- move.w d1,d2
- move.w d1,d3
- lsr.w #4,d1
- andi.w #$f0,d1
- move.b d1,(a4)+
- andi.w #$f0,d2
- move.b d2,(a4)+
- lsl.w #4,d3
- move.b d3,(a4)+
- dbra d0,sILBM_LoopColors
- ;a3<-Body StartAdress
- ;a1<-Bitmap
- movem.l 8(a1),d1-d5
- movem.l d1-d5,sILBM_PlanePtr
- move.w 2(a1),d7 ;d7 <- # of rows
- move.b 5(a1),d6
- ext.w d6 ;d6 <- # of planes
- move.w d6,sILBM_Depth
- move.w (a1),d5 ;d5 <- Bytes per row
- subq.w #1,d5
- move.w d5,sILBM_BytesPerRow
- move.l a3,a1 ;a1 <- Buffer
- sILBM_LoopRows:
- moveq.w #0,d6 ;d6 <- Plane to be computed
- sILBM_LoopPlanes:
- move.w d6,d5
- lsl.w #2,d5
- lea sILBM_PlanePtr,a0
- lea 0(a0,d5.w),a5 ;a0 <- address of plane
- move.l (a5),a0
- move.w sILBM_BytesPerRow,d5
- move.l a1,a2
- add.l #1,a1
- move.b (a0)+,d3
- move.b d3,(a1)+
- moveq.b #0,d4
- cmp.b (a0),d3
- bne sILBM_FirstAreDiff
- cmp.b 1(a0),d3
- bne sILBM_FirstAreDiff
- moveq.b #0,d2 ;d2 <- flag identic/different
- bra sILBM_LoopBytes
- sILBM_FirstAreDiff:
- moveq.b #-1,d2
- sILBM_LoopBytes:
- move.b (a0)+,d1
- cmp.b d1,d3
- bne sILBM_AreSame
- tst.b d2
- bne sILBM_AreSame1
- subq.b #1,d4
- bra sILBM_EndTest
- sILBM_AreSame1:
- cmp.b (a0),d1
- bne sILBM_AreSame2
- subq.b #1,d4
- move.b d4,(a2)
- moveq.b #-1,d4
- move.l a1,a2
- sub.l #1,a2
- move.b d1,(a1)+
- moveq.b #0,d2
- bra sILBM_EndTest
- sILBM_AreSame:
- tst.b d2
- bne sILBM_AreSame2
- move.b d4,(a2)
- moveq.b #0,d4
- move.l a1,a2
- add.l #1,a1
- move.b d1,(a1)+
- cmp.b (a0),d1
- bne sILBM_WillBeDiff
- cmp.b 1(a0),d1
- bne sILBM_WillBeDiff
- moveq.b #0,d2
- bra sILBM_EndTest
- sILBM_WillBeDiff:
- moveq.b #-1,d2
- bra sILBM_EndTest
- sILBM_AreSame2:
- move.b d1,(a1)+
- addq.b #1,d4
- sILBM_EndTest:
- move.b d1,d3
- subq.w #1,d5
- bne sILBM_LoopBytes
- move.b d4,(a2)
- move.l a0,(a5)
- addq.w #1,d6
- cmp.w sILBM_Depth,d6
- blt sILBM_LoopPlanes
- dbra d7,sILBM_LoopRows
- sub.l #1,a1
- move.l a1,d4
- sub.l a3,d4
- addq.l #1,d4
- andi.l #-2,d4
- move.l d4,-4(a3)
- move.l sILBM_Buffer,a3
- move.l a1,d4
- sub.l a3,d4
- addq.l #1,d4
- andi.l #-2,d4
- move.l d4,d2
- sub.l #8,d4
- move.l d4,4(a3)
-
- move.l DosLib,a6
- move.l d2,d6
- move.l a3,a5
- move.l #1006,d2
- move.l #sILBM_Name,d1
- jsr Open(a6)
- tst.l d0
- beq SaveError2
- move.l d0,sILBM_Lock
- move.l d0,d1
- move.l a5,d2
- move.l d6,d3
- jsr Write(a6)
- move.l sILBM_Lock,d1
- jsr Close(a6)
-
- SaveFreeIt:
- move.l 4,a6
- move.l sILBM_Buffer,a1
- move.l #41000,d0
- jsr FreeMem(a6)
- rts
-
- SaveError2:
- bsr SaveFreeIt
- SaveError:
- clr.l SaveGadget1
- move.l IntuitionLib,a6
- lea SaveWindowDefs,a0
- jsr OpenWindow(a6)
- move.l d0,SaveWindowHandler
- move.l d0,a0
- move.l 50(a0),a0
- lea SaveErrorText,a1
- moveq.l #10,d0
- move.l d0,d1
- jsr PrintIText(a6)
- move.l 4,a6
- SaveErrorNotOK:
- move.l SaveWindowHandler,a0
- move.l 86(a0),a0
- jsr GetMsg(a6)
- tst.l d0
- bne SaveErrorOK
- move.l SaveWindowHandler,a0
- move.l 86(a0),a0
- moveq.l #0,d1
- move.b 15(a0),d1
- moveq.l #1,d0
- asl.l d1,d0
- jsr Wait(a6)
- bra SaveErrorNotOK
- SaveErrorOK:
- move.l d0,a1
- jsr ReplyMsg(a6)
- move.l SaveWindowHandler,a0
- move.l IntuitionLib,a6
- jsr CloseWindow(a6)
- rts
-
- ;************************************************
- ;*** FastPlot Rastport,X,Y,Color (a0,d0,d1,d2) **
- ;************************************************
- FastPlot:
- movem.l d3/a1,-(sp)
- add.w #10,d1
- move.l 4(a0),a0
- move.w (a0),d3
- mulu d1,d3
- move.w d0,d1
- lsr.w #3,d1
- add.w d1,d3 ;d3 <- Adress to plot
- lsl.w #3,d1
- sub.w d1,d0 ;d0 <- Bit to plot
- neg.b d0
- subq.b #1,d0
- andi.b #7,d0
- move.b 5(a0),d1 ;d1 <- # of bitplanes
- subq.b #1,d1
- ext.w d1
- add.l #8,a0
- FastPlot_LoopPlanes:
- move.l (a0)+,a1
- lsr.b #1,d2
- bcs FastPlot_BitSet
- bclr d0,0(a1,d3.w)
- bra FastPlot_EndLoopPlanes
- FastPlot_BitSet:
- bset d0,0(a1,d3.w)
- FastPlot_EndLoopPlanes:
- dbra d1,FastPlot_LoopPlanes
- movem.l (sp)+,d3/a1
- rts
-
- RemInfoFunc:
- lea $1c(a0),a0
- move.l a0,d0
- CheckZero:
- tst.b (a0)+
- bne CheckZero
- subq.l #1,d0
- sub.l a0,d0
- neg.l d0
- subq.l #5,d0
- bcs NotAnInfoFile
- cmpi.b #'o',-(A0)
- bne.s NotAnInfoFile
- cmpi.b #'f',-(a0)
- bne.s NotAnInfoFile
- cmpi.b #'n',-(a0)
- bne.s NotAnInfoFile
- cmpi.b #'i',-(a0)
- bne.s NotAnInfoFile
- cmpi.b #'.',(a0)
- bne.s NotAnInfoFile
- moveq #-1,d0
- move.l d0,4(a7)
- rts
- NotAnInfoFile:
- moveq #0,d0
- move.l d0,4(a7)
- rts
-
- ;************************************************
- ;*** DATA ***************************************
- ;************************************************
-
- SECTION rempli,DATA
-
- IntuitionName:
- dc.b 'intuition.library',0
- even
- GfxName:
- dc.b 'graphics.library',0
- even
- FFPName:
- dc.b 'mathffp.library',0
- even
- DosName:
- dc.b 'dos.library',0
- even
- ArpName:
- dc.b 'arp.library',0
- even
- IntuitionLib:
- dc.l 0
- GfxLib:
- dc.l 0
- FFPLib:
- dc.l 0
- DosLib:
- dc.l 0
- ArpLib:
- dc.l 0
- WB_Message:
- dc.l 0
- MyTask:
- dc.l 0
- OldFashion:
- dc.l 0
-
- ScreenDefs:
- dc.w 0,0
- dc.w 320,200,5
- dc.b 0,1
- dc.w 2,15
- dc.l 0
- dc.l TitreEcran
- dc.l 0,0
- even
- TitreEcran:
- dc.b 'Fractal Dynamics '
- dc.l VERSION
- dc.b 'by J-F Stenuit',0
- even
- WindowDefs:
- dc.w 0,10
- dc.w 320,190
- dc.b 0,1
- dc.l $100 ;IDCMP = Menu
- dc.l $1000
- dc.l 0 ;No gadget
- dc.l 0
- dc.l TitreFenetre1
- ScreenHandler: dc.l 0
- dc.l 0
- dc.w 320,190,320,190
- dc.w 15
- even
- WindowHandler:
- dc.l 0
- RastPort:
- dc.l 0
- TitreFenetre1:
- dc.b 'Julia Set',0
- even
- TitreFenetre2:
- dc.b 'Mandelbrot Set',0
- even
- InfoWindowDefs:
- dc.w 20,58
- dc.w 280,96
- dc.b 3,4
- dc.l $40 ;IDCMP=GadgetUp
- dc.l $11000
- dc.l OKGadget
- dc.l 0
- dc.l 0
- ScreenHandler2: dc.l 0
- dc.l 0
- dc.w 280,96,280,96
- dc.w 15
- even
- InfoWindowHandler:
- dc.l 0
-
- InfoText:
- dc.b 3,0,4
- dc.w 0,0
- dc.l 0,InfoTextA
- dc.l InfoText1
- InfoText1:
- dc.b 4,0,0
- dc.w 10,20
- dc.l 0,InfoText1A
- dc.l InfoText2
- InfoText2:
- dc.b 5,0,0
- dc.w 20,40
- dc.l 0,InfoText2A
- dc.l 0
- InfoTextA:
- dc.b 'Fractal Dynamics Generator PRO',0
- even
- InfoText1A:
- dc.b '(c) Jean-Franτois Stenuit',0
- even
- InfoText2A:
- dc.b 'Many thanks to Igor Prozenko',0
- even
-
- OKGadget:
- dc.l 0
- dc.w 220,76,32,12
- dc.w 0
- dc.w 1,1
- dc.l OKGadgetBorder,0
- dc.l OKGadgetName
- dc.l 0,0
- dc.w 1
- dc.l 0
- OKGadgetName:
- dc.b 1,0,1
- dc.w 6,2
- dc.l 0,OKGadgetText,0
- OKGadgetText:
- dc.b 'OK',0
- even
- OKGadgetBorder:
- dc.w 0,0
- dc.b 3,0,0,5
- dc.l OKGadgetBorderCoord
- dc.l 0
- OKGadgetBorderCoord:
- dc.w -2,-2,-2,14,34,14,34,-2,-2,-2
-
- StringGadget1:
- dc.l StringGadget2
- dc.w 20,20,80,10
- dc.w 0
- dc.w 2,4
- dc.l StrGadget1Border,0
- dc.l StrGadget1Name,0,StrGadget1SInfo
- dc.w 2
- dc.l 0
- StrGadget1Name:
- dc.b 1,0,1
- dc.w 0,-15
- dc.l 0,StrGadget1Text,0
- StrGadget1Text:
- dc.b 'r Axis min',0
- even
- StrGadget1Border:
- dc.w 0,0
- dc.b 3,0,0,5
- dc.l StrGadget1BorderCoord
- dc.l 0
- StrGadget1BorderCoord:
- dc.w -2,-2,-2,9,82,9,82,-2,-2,-2
- StrGadget1SInfo:
- dc.l MinX
- dc.l Buffer
- dc.w 0,10,0,0,0,0,0,0
- dc.l 0,0,0
-
- StringGadget2:
- dc.l StringGadget3
- dc.w 140,20,80,10
- dc.w 0
- dc.w 2,4
- dc.l StrGadget2Border,0
- dc.l StrGadget2Name,0,StrGadget2SInfo
- dc.w 3
- dc.l 0
- StrGadget2Name:
- dc.b 1,0,1
- dc.w 0,-15
- dc.l 0,StrGadget2Text,0
- StrGadget2Text:
- dc.b 'r Axis max',0
- even
- StrGadget2Border:
- dc.w 0,0
- dc.b 3,0,0,5
- dc.l StrGadget2BorderCoord
- dc.l 0
- StrGadget2BorderCoord:
- dc.w -2,-2,-2,9,82,9,82,-2,-2,-2
- StrGadget2SInfo:
- dc.l MaxX
- dc.l Buffer+14
- dc.w 0,10,0,0,0,0,0,0
- dc.l 0,0,0
-
- StringGadget3:
- dc.l StringGadget4
- dc.w 20,60,80,10
- dc.w 0
- dc.w 2,4
- dc.l StrGadget3Border,0
- dc.l StrGadget3Name,0,StrGadget3SInfo
- dc.w 4
- dc.l 0
- StrGadget3Name:
- dc.b 1,0,1
- dc.w 0,-15
- dc.l 0,StrGadget3Text,0
- StrGadget3Text:
- dc.b 'i Axis min',0
- even
- StrGadget3Border:
- dc.w 0,0
- dc.b 3,0,0,5
- dc.l StrGadget3BorderCoord
- dc.l 0
- StrGadget3BorderCoord:
- dc.w -2,-2,-2,9,82,9,82,-2,-2,-2
- StrGadget3SInfo:
- dc.l MinY
- dc.l Buffer+28
- dc.w 0,10,0,0,0,0,0,0
- dc.l 0,0,0
-
- StringGadget4:
- dc.l 0
- dc.w 140,60,80,10
- dc.w 0
- dc.w 2,4
- dc.l StrGadget4Border,0
- dc.l StrGadget4Name,0,StrGadget4SInfo
- dc.w 5
- dc.l 0
- StrGadget4Name:
- dc.b 1,0,1
- dc.w 0,-15
- dc.l 0,StrGadget4Text,0
- StrGadget4Text:
- dc.b 'i Axis max',0
- even
- StrGadget4Border:
- dc.w 0,0
- dc.b 3,0,0,5
- dc.l StrGadget4BorderCoord
- dc.l 0
- StrGadget4BorderCoord:
- dc.w -2,-2,-2,9,82,9,82,-2,-2,-2
- StrGadget4SInfo:
- dc.l MaxY
- dc.l Buffer+42
- dc.w 0,10,0,0,0,0,0,0
- dc.l 0,0,0
-
- JuliaWindowDefs:
- dc.w 60,30
- dc.w 200,70
- dc.b 3,4
- dc.l $40 ;IDCMP=GadgetUp
- dc.l $11000
- dc.l JuliaGadget1
- dc.l 0
- dc.l 0
- ScreenHandler3: dc.l 0
- dc.l 0
- dc.w 140,60,140,60
- dc.w 15
- even
- JuliaWindowHandler:
- dc.l 0
-
- JuliaGadget1:
- dc.l JuliaGadget2
- dc.w 160,40,32,12
- dc.w 0
- dc.w 1,1
- dc.l OKGadgetBorder,0
- dc.l OKGadgetName
- dc.l 0,0
- dc.w 1
- dc.l 0
-
- JuliaGadget2:
- dc.l JuliaGadget3
- dc.w 104,20,88,12
- dc.w 0
- dc.w 1,1
- dc.l JuliaGadget2Border,0
- dc.l JuliaGadget2Name
- dc.l 0,0
- dc.w 2
- dc.l 0
- JuliaGadget2Name:
- dc.b 1,0,1
- dc.w 6,2
- dc.l 0,JuliaGadget2Text,0
- JuliaGadget2Text:
- dc.b 'On screen',0
- even
- JuliaGadget2Border:
- dc.w 0,0
- dc.b 3,0,0,5
- dc.l JuliaGadget2BorderCoord
- dc.l 0
- JuliaGadget2BorderCoord:
- dc.w -2,-2,-2,14,90,14,90,-2,-2,-2
-
- JuliaGadget3:
- dc.l JuliaGadget4
- dc.w 5,20,80,10
- dc.w 0
- dc.w 2,4
- dc.l StrGadget3Border,0
- dc.l JuliaGadget3Name,0,JuliaGadget3SInfo
- dc.w 3
- dc.l 0
- JuliaGadget3Name:
- dc.b 1,0,1
- dc.w 0,-15
- dc.l 0,JuliaGadget3Text,0
- JuliaGadget3Text:
- dc.b 'r parameter',0
- even
- JuliaGadget3SInfo:
- dc.l AA
- dc.l Buffer
- dc.w 0,10,0,0,0,0,0,0
- dc.l 0,0,0
-
- JuliaGadget4:
- dc.l 0
- dc.w 5,50,80,10
- dc.w 0
- dc.w 2,4
- dc.l StrGadget4Border,0
- dc.l JuliaGadget4Name,0,JuliaGadget4SInfo
- dc.w 4
- dc.l 0
- JuliaGadget4Name:
- dc.b 1,0,1
- dc.w 0,-15
- dc.l 0,JuliaGadget4Text,0
- JuliaGadget4Text:
- dc.b 'i parameter',0
- even
- JuliaGadget4SInfo:
- dc.l OO
- dc.l Buffer+14
- dc.w 0,10,0,0,0,0,0,0
- dc.l 0,0,0
-
- SaveWindowDefs:
- dc.w 60,30
- dc.w 200,70
- dc.b 3,4
- dc.l $40 ;IDCMP=GadgetUp
- dc.l $11000
- dc.l SaveGadget1
- dc.l 0
- dc.l 0
- ScreenHandler4: dc.l 0
- dc.l 0
- dc.w 140,60,140,60
- dc.w 15
- even
- SaveWindowHandler:
- dc.l 0
-
- SaveGadget1:
- dc.l SaveGadget2
- dc.w 160,40,32,12
- dc.w 0
- dc.w 1,1
- dc.l OKGadgetBorder,0
- dc.l OKGadgetName
- dc.l 0,0
- dc.w 1
- dc.l 0
-
- SaveGadget2:
- dc.l SaveGadget3
- dc.w 5,40,72,12
- dc.w 0
- dc.w 1,1
- dc.l SaveGadget2Border,0
- dc.l SaveGadget2Name
- dc.l 0,0
- dc.w 2
- dc.l 0
- SaveGadget2Name:
- dc.b 1,0,1
- dc.w 6,2
- dc.l 0,SaveGadget2Text,0
- SaveGadget2Text:
- dc.b 'Cancel',0
- even
- SaveGadget2Border:
- dc.w 0,0
- dc.b 3,0,0,5
- dc.l SaveGadget2BorderCoord
- dc.l SaveGadget2bBorder
- SaveGadget2BorderCoord:
- dc.w -2,-2,-2,14,74,14,74,-2,-2,-2
- SaveGadget2bBorder:
- dc.w 0,0
- dc.b 3,0,0,5
- dc.l SaveGadget2bBorderCoord
- dc.l 0
- SaveGadget2bBorderCoord:
- dc.w 0,0,0,12,72,12,72,0,0,0
-
- SaveGadget3:
- dc.l 0
- dc.w 5,20,187,10
- dc.w 0
- dc.w 2,4
- dc.l SaveGadget3Border,0
- dc.l SaveGadget3Name,0,SaveGadget3SInfo
- dc.w 4
- dc.l 0
- SaveGadget3Name:
- dc.b 1,0,1
- dc.w 0,-15
- dc.l 0,SaveGadget3Text,0
- SaveGadget3Text:
- dc.b 'Save name :',0
- even
- SaveGadget3SInfo:
- dc.l sILBM_Name
- dc.l Buffer
- dc.w 0,29,0,0,0,0,0,0
- dc.l 0,0,0
- SaveGadget3Border:
- dc.w 0,0
- dc.b 3,0,0,5
- dc.l SaveGadget3BorderCoord
- dc.l 0
- SaveGadget3BorderCoord:
- dc.w -2,-2,-2,9,189,9,189,-2,-2,-2
-
- SaveErrorText:
- dc.b 1,0,4
- dc.w 0,0
- dc.l 0,SaveErrorA
- dc.l 0
- SaveErrorA:
- dc.b 'Save Error, sorry',0
- even
-
- ArpRequest:
- dc.l ArpRequestName
- dc.l FileNameBuffer
- dc.l DirNameBuffer
- dc.l 0
- dc.w 0
- dc.l RemInfoFunc
- dc.w 10,30
- ArpRequestName:
- dc.b 'Save file :',0
- even
-
- Menu00:
- dc.l Menu10
- dc.w 5,0
- dc.w 60,10
- dc.w 1
- dc.l Menu00Name
- dc.l Menu01
- dc.w 0,0,0,0
- Menu00Name:
- dc.b 'Project',0
- even
- Menu10:
- dc.l Menu20
- dc.w 65,0
- dc.w 60,10
- dc.w 1
- dc.l Menu10Name
- dc.l Menu11
- dc.w 0,0,0,0
- Menu10Name:
- dc.b 'Set',0
- even
- Menu20:
- dc.l Menu30
- dc.w 125,0
- dc.w 60,10
- dc.w 1
- dc.l Menu20Name
- dc.l Menu21
- dc.w 0,0,0,0
- Menu20Name:
- dc.b 'Zoom',0
- even
- Menu30:
- dc.l Menu40
- dc.w 185,0
- dc.w 60,10
- dc.w 1
- dc.l Menu30Name
- dc.l Menu31
- dc.w 0,0,0,0
- Menu30Name:
- dc.b 'Colors',0
- even
- Menu40:
- dc.l 0
- dc.w 245,0
- dc.w 60,10
- dc.w 1
- dc.l Menu40Name
- dc.l Menu41
- dc.w 0,0,0,0
- Menu40Name:
- dc.b 'Picture',0
- even
-
- Menu01:
- dc.l Menu02
- dc.w 0,0
- dc.w 90,10
- dc.w $52
- dc.l 0
- dc.l Menu01Name
- dc.l 0
- dc.b 'S',0
- dc.l 0
- dc.w 0
- Menu01Name:
- dc.b 2,0,2
- dc.w 0,0
- dc.l 0,Menu01Text,0
- Menu01Text:
- dc.b 'Save',0
- even
- Menu02:
- dc.l Menu03
- dc.w 0,12
- dc.w 90,10
- dc.w $52
- dc.l 0
- dc.l Menu02Name
- dc.l 0
- dc.b 'I'
- even
- dc.l 0
- dc.w 0
- Menu02Name:
- dc.b 2,0,2
- dc.w 0,0
- dc.l 0,Menu02Text,0
- Menu02Text:
- dc.b 'Info',0
- even
- Menu03:
- dc.l Menu04
- dc.w 0,24
- dc.w 90,10
- dc.w $56
- dc.l 0
- dc.l Menu03Name
- dc.l 0
- dc.b 'G'
- even
- dc.l 0
- dc.w 0
- Menu03Name:
- dc.b 2,0,2
- dc.w 0,0
- dc.l 0,Menu03Text,0
- Menu03Text:
- dc.b 'Generate',0
- even
- Menu04:
- dc.l Menu05
- dc.w 0,36
- dc.w 90,10
- dc.w $42
- dc.l 0
- dc.l Menu04Name
- dc.l 0
- dc.b 'S'
- even
- dc.l 0
- dc.w 0
- Menu04Name:
- dc.b 2,0,2
- dc.w 0,0
- dc.l 0,Menu04Text,0
- Menu04Text:
- dc.b 'Stop = ESC',0
- even
-
- Menu05:
- dc.l 0
- dc.w 0,60
- dc.w 90,10
- dc.w $56
- dc.l 0
- dc.l Menu05Name
- dc.l 0
- dc.b 'Q'
- even
- dc.l 0
- dc.w 0
- Menu05Name:
- dc.b 2,0,2
- dc.w 0,0
- dc.l 0,Menu05Text,0
- Menu05Text:
- dc.b 'Quit',0
- even
-
- Menu11:
- dc.l Menu12
- dc.w 0,0
- dc.w 100,10
- dc.w $53
- dc.l 0
- dc.l Menu11Name
- dc.l 0
- dc.b 'M'
- even
- dc.l 0
- dc.w 0
- Menu11Name:
- dc.b 2,0,2
- dc.w 0,0
- dc.l 0,Menu11Text,0
- Menu11Text:
- dc.b ' Mandelbrot'
- even
- Menu12:
- dc.l 0
- dc.w 0,12
- dc.w 100,10
- dc.w $153
- dc.l 0
- dc.l Menu12Name
- dc.l 0
- dc.b 'J'
- even
- dc.l 0
- dc.w 0
- Menu12Name:
- dc.b 2,0,2
- dc.w 0,0
- dc.l 0,Menu12Text,0
- Menu12Text:
- dc.b ' Julia',0
- even
-
- Menu21:
- dc.l Menu22
- dc.w 0,0
- dc.w 80,10
- dc.w $52
- dc.l 0
- dc.l Menu21Name
- dc.l 0
- dc.b 'O'
- even
- dc.l 0
- dc.w 0
- Menu21Name:
- dc.b 2,0,2
- dc.w 0,0
- dc.l 0,Menu21Text,0
- Menu21Text:
- dc.b 'On screen',0
- even
- Menu22:
- dc.l 0
- dc.w 0,12
- dc.w 80,10
- dc.w $52
- dc.l 0
- dc.l Menu22Name
- dc.l 0
- dc.b 'M'
- even
- dc.l 0
- dc.w 0
- Menu22Name:
- dc.b 2,0,2
- dc.w 0,0
- dc.l 0,Menu22Text,0
- Menu22Text:
- dc.b 'Manual',0
- even
- Menu41:
- dc.l Menu42
- dc.w 0,0
- dc.w 60,10
- dc.w $53
- dc.l 0
- dc.l Menu41Name
- dc.l 0
- dc.b 'L'
- even
- dc.l 0
- dc.w 0
- Menu41Name:
- dc.b 2,0,2
- dc.w 0,0
- dc.l 0,Menu41Text,0
- Menu41Text:
- dc.b ' Large',0
- even
- Menu42:
- dc.l 0
- dc.w 0,12
- dc.w 60,10
- dc.w $153
- dc.l 0
- dc.l Menu42Name
- dc.l 0
- dc.b 'S'
- even
- dc.l 0
- dc.w 0
- Menu42Name:
- dc.b 2,0,2
- dc.w 0,0
- dc.l 0,Menu42Text,0
- Menu42Text:
- dc.b ' Small',0
- even
-
- Menu31:
- dc.l Menu32
- dc.w 0,0
- dc.w 96,10
- dc.w $153
- dc.l 0
- dc.l Menu31Name
- dc.l 0
- dc.b 0
- even
- dc.l 0
- dc.w 0
- Menu31Name:
- dc.b 2,0,2
- dc.w 0,0
- dc.l 0,Menu31Text,0
- Menu31Text:
- dc.b ' Rainbow',0
- even
- Menu32:
- dc.l Menu33
- dc.w 0,12
- dc.w 96,10
- dc.w $53
- dc.l 0
- dc.l Menu32Name
- dc.l 0
- dc.b 0
- even
- dc.l 0
- dc.w 0
- Menu32Name:
- dc.b 2,0,2
- dc.w 0,0
- dc.l 0,Menu32Text,0
- Menu32Text:
- dc.b ' Green-Blue',0
- even
- Menu33:
- dc.l 0
- dc.w 0,24
- dc.w 96,10
- dc.w $53
- dc.l 0
- dc.l Menu33Name
- dc.l 0
- dc.b 0
- even
- dc.l 0
- dc.w 0
- Menu33Name:
- dc.b 2,0,2
- dc.w 0,0
- dc.l 0,Menu33Text,0
- Menu33Text:
- dc.b ' Red-Blue',0
- even
-
- MinX:
- dc.b '-2',0,' ',0
- MaxX:
- dc.b '2',0,' ',0
- MinY:
- dc.b '-2',0,' ',0
- MaxY:
- dc.b '2',0,' ',0
- AA:
- dc.b '0',0,' ',0
- OO:
- dc.b '1',0,' ',0
- SoundOfTwo:
- dc.b ' 2',0,' ',0
- even
- RealMinX:
- dc.l Realm2
- RealMaxX:
- dc.l Real2
- RealMinY:
- dc.l Realm2
- RealMaxY:
- dc.l Real2
-
- ZoomFlag:
- dc.b 0
- OSCenter:
- dc.b 0
- JuliaFlag:
- dc.b 0
- SmallFlag:
- dc.b 0
- ColorFlag:
- dc.b 0
- even
-
- PolyTable:
- dc.w 0,0,0,0
-
- CoefTransX:
- dc.l 0
- CoefTransY:
- dc.l 0
-
- ScrMinX:
- dc.l 120
- ScrMinY:
- dc.l 65
- ScrMaxX:
- dc.l 200
- ScrMaxY:
- dc.l 115
- RealXSize:
- dc.l Real80
- RealYSize:
- dc.l Real50
- RealAA:
- dc.l 0
- RealOO:
- dc.l $80000041
- RealR:
- dc.l 0
- RealI:
- dc.l 0
- ZoomMinX:
- dc.l 0
- ZoomMinY:
- dc.l 0
- ZoomMaxX:
- dc.l 0
- ZoomMaxY:
- dc.l 0
-
- sILBM_Buffer:
- dc.l 0
- sILBM_PlanePtr:
- dc.l 0,0,0,0,0
- sILBM_Depth:
- dc.w 0
- sILBM_BytesPerRow:
- dc.w 0
- sILBM_Lock:
- dc.l 0
-
- Palette1:
- dc.w $000,$f00,$f30,$f60,$f90,$fc0,$ff0,$cf0
- dc.w $9f0,$6f0,$3f0,$0f0,$0f3,$0f6,$0f9,$0fc
- dc.w $0ff,$0cf,$09f,$06f,$03f,$00f,$30f,$60f
- dc.w $90f,$c0f,$f0f,$c0c,$909,$606,$303,$000
- Palette2:
- dc.w $000,$00f,$13f,$15f,$27f,$38f,$3af,$4cf
- dc.w $5df,$5ef,$6ff,$5fe,$5fc,$4fb,$3f9,$2f7
- dc.w $2f5,$1f2,$0f0,$0e0,$0d0,$0c0,$0b0,$0a0
- dc.w $090,$080,$070,$060,$050,$040,$030,$020
- Palette3:
- dc.w $000,$00f,$31f,$51f,$72f,$83f,$a3f,$c4f
- dc.w $d5f,$e5f,$f6f,$f5e,$f5c,$f4b,$f39,$f27
- dc.w $f25,$f12,$f00,$e00,$d00,$c00,$b00,$a00
- dc.w $900,$800,$700,$600,$500,$400,$300,$200
- even
-
- SECTION Vide,BSS
-
- sILBM_Name:
- ds.b 200
- Buffer:
- ds.b 60
- FileNameBuffer:
- ds.b 80
- DirNameBuffer:
- ds.b 120
-
- END
-
-
-